home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AdobeExamples / NX_ImportAdv / DrawingView.h < prev    next >
Text File  |  1992-12-19  |  6KB  |  193 lines

  1.  
  2. /*
  3.  * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
  4.  *
  5.  * (b)  If this Sample Code is distributed as part of the Display PostScript
  6.  *    System Software Development Kit from Adobe Systems Incorporated,
  7.  *    then this copy is designated as Development Software and its use is
  8.  *    subject to the terms of the License Agreement attached to such Kit.
  9.  *
  10.  * (c)  If this Sample Code is distributed independently, then the following
  11.  *    terms apply:
  12.  *
  13.  * (d)  This file may be freely copied and redistributed as long as:
  14.  *    1) Parts (a), (d), (e) and (f) continue to be included in the file,
  15.  *    2) If the file has been modified in any way, a notice of such
  16.  *      modification is conspicuously indicated.
  17.  *
  18.  * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
  19.  *    Adobe Systems Incorporated.
  20.  * 
  21.  * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
  22.  *    CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
  23.  *    AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
  24.  *    ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
  25.  *    OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
  26.  *    WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
  27.  *    WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
  28.  *    DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
  29.  *    FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
  30.  *    OF THIRD PARTY RIGHTS.
  31.  */
  32.  
  33. /*
  34.  *    DrawingView.h
  35.  *
  36.  *    This view represents the page that the image is drawn onto. It is
  37.  *    a subview of the DocView. The DocView is the document view of
  38.  *    the ClipView. This view's real size grows with the scale but the
  39.  *    bounds always stays the same.
  40.  *
  41.  *    Version:    2.0
  42.  *    Author:    Ken Fromm
  43.  *    History:
  44.  *            03-17-91        Added this comment and fixed the preview section.
  45.  */
  46.  
  47. #import "ImportApp.h"
  48. #import "epsfstruct.h"
  49.  
  50. #import <appkit/View.h>
  51. #import <appkit/tiff.h>
  52. #import <appkit/timer.h>
  53.  
  54. #define  FONTSIZE            5
  55. #define  SCROLL_MARGIN        8
  56. #define  COMMENT_MAXLINE    100
  57.  
  58. /*
  59. *    A very system dependent define. It defines the amount of time
  60. *    that the mouse must be held down before it is considered a move.
  61. *    This hopefully prevents accidentally moving an object when
  62. *    just trying to select it or another.
  63. */
  64. #define  MOVE_INTERVAL    12
  65.  
  66. /* Flags that control the drawing operations of the graphic objects. */
  67. #define  NOFLAGS            0x0
  68. #define  REDRAWFLAG        0x1
  69. #define  MOVEFLAG            0x2
  70. #define  CLEARFLAG            0x4
  71. #define  REFRESHFLAG        0x8
  72.         
  73. @interface DrawingView:View
  74. {
  75.     id        imageId,    /* id of the bitmap image for the preview */
  76.             bufferId,            /* id of the offscreen buffer  (content view of a window) */
  77.             graphicId,        /* id of imported file waiting to be placed */
  78.             graphiclistId,        /* list of all the graphics */
  79.             selectedlistId;        /* list of selected graphics */
  80.  
  81.     BOOL    dirty,            /* YES if different from saved version. */
  82.             pastevalid;        /* YES if the pasteboard holds a valid type */
  83.  
  84.     int        timermask,        /* the mask for modal loop timing */
  85.             pastecount;        /* the count when the paste menu cell is validated */
  86.  
  87.     UPath    *hitPoint,            /* user path description used for hit detection */
  88.             *upathBuffer;        /* an application wide buffer for control points or whatever */
  89.     
  90.     NXTrackingTimer    *timer;    /* the timer structure for modal loop drawing */
  91.  
  92.     NXPoint        rotatePoint;    /* the point about which to rotate the selected graphics */
  93. }
  94.  
  95. +newFrame:(const NXRect *) frm;
  96.  
  97. - free;
  98.  
  99. - showBuffer:sender;
  100. - hideBuffer:sender;
  101.  
  102. - (float) controlPointSize;
  103. - (float) hitSetting;
  104. - buffer;
  105. - image;
  106.  
  107. - setDirty:(BOOL) flag;
  108. - (BOOL)isDirty;
  109. - (BOOL)isEmpty;
  110. - (BOOL)isSelected;
  111.  
  112. - moveTo:(NXCoord)x :(NXCoord)y;
  113. - scale:(NXCoord)x :(NXCoord)y;
  114.  
  115. - writePSToStream:(NXStream *) stream;
  116.  
  117. /* The next seven methods are invoked through target-action first responder messages. */
  118. - cut:sender;
  119. - delete:sender;
  120. - copy:sender;
  121. - paste:sender;
  122. - selectAll:sender;
  123. - bringToFront:sender;
  124. - sendToBack:sender;
  125. - originalRatio:sender;
  126.  
  127. - scrollToRect:(const NXRect *)toRect;
  128. - constrainPoint:(NXPoint *)aPt  withOffset:(const NXSize*)llOffset  :(const NXSize*)urOffset;
  129. - constrainRect:(NXRect *)aRect;
  130.  
  131. - redrawObject:objectId  :(int) pt_num;
  132. - moveObject:(NXEvent *)event;
  133.  
  134. - eraseRotatePoint:(NXRect *) drawnRect;
  135. - drawRotatePoint;
  136. - rotateObjectStart:(NXEvent *)event;
  137. - rotateObject:(NXEvent *)event;
  138.  
  139. - checkControl:(const NXPoint *) p :(int *) pt_num;
  140. - checkObject:(const NXPoint *) p  in:listId  from:(int) start  to:(int) end;
  141. - deselectObject:objectId;
  142. - selectObject:objectId;
  143. - testObject:(NXEvent *)event;
  144.  
  145. - importFile:(const char *) file  at:(NXPoint *) p;
  146. - placeObjectAt:(NXPoint *) p;
  147. - importObject:(NXEvent *)event;
  148.  
  149. /* Event handling methods. */
  150. - mouseDown:(NXEvent *)event;
  151. - flagsChanged:(NXEvent *) event;
  152. - keyDown:(NXEvent *) event;
  153.  
  154. /* Drawing methods */
  155. - drawObject:object  forRect:(NXRect *)r  withFlags:(int) flags;
  156. - drawControl:object  forRect:(NXRect *)r  withFlags:(int) flags;
  157. - drawSelf:(NXRect *)r :(int) count;
  158. - display:(NXRect *)r  :(int) count  :(BOOL)flag;
  159. - (BOOL) lockFocus;
  160. - unlockFocus;
  161.  
  162. - (BOOL)acceptsFirstResponder;
  163.  
  164. /* Archiving methods. */
  165. - write:(NXTypedStream *)stream;
  166. - read:(NXTypedStream *)stream;
  167. - awake;
  168.  
  169. /* Enables and disables the menu cells for first responder messages. */
  170. - (BOOL)validateCommand:menuCell;
  171.  
  172. /* Printing/copying methods overridden from the view class. */
  173. - (BOOL) knowsPagesFirst:(int *) firstPageNum  last:(int *) lastPageNum;
  174. - (BOOL) getRect:(NXRect *) theRect  forPage:(int) page;
  175. - addResources:(Resource *) docResources;
  176. - beginResourceComments:(const NXRect *) bbox;
  177.  
  178. - beginPrologueBBox:(const NXRect *)boundingBox 
  179.     creationDate:(const char *)dateCreated 
  180.     createdBy:(const char *)anApplication 
  181.     fonts:(const char *)fontNames 
  182.     forWhom:(const char *)user 
  183.     pages:(int)numPages 
  184.     title:(const char *)aTitle;
  185. - endHeaderComments;
  186. - endPrologue;
  187. - beginSetup;
  188. - endSetup;
  189. - beginTrailer;
  190. - endTrailer;
  191.  
  192. @end
  193.